home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / fontedit.arc / FONTEDIT.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-07-04  |  7.4 KB  |  339 lines

  1. 100 'font editor
  2. 110 '
  3. 120 '
  4. 130 '
  5. 140 '
  6. 150 '
  7. 160 '
  8. 170 '
  9. 180 DIM A(7,7)
  10. 190 SCREEN 1
  11. 200 CLS
  12. 210 '
  13. 220 ' define keys
  14. 230 KEY OFF
  15. 240 KEY 1,"":KEY 2,""
  16. 250 KEY 3,"":KEY 4,""
  17. 260 KEY 10,CHR$(27)
  18. 270 '
  19. 280 'set up pointer to characters
  20. 290 CBASE = &H4000
  21. 300 DEF SEG = 0
  22. 310 POKE &H7C, 0
  23. 320 POKE &H7D, &H40
  24. 330 POKE &H7E, PEEK (&H510)
  25. 340 POKE &H7F, PEEK (&H511)
  26. 350 DEF SEG
  27. 360 '
  28. 370 ACODE = 128
  29. 380 '
  30. 390 ' set up screen
  31. 400 '
  32. 410 LOCATE 1,14
  33. 420 PRINT "Font Editor"
  34. 430 FOR J = 1 TO 8
  35. 440   LOCATE 4 + J,18
  36. 450   PRINT "........";
  37. 460 NEXT J
  38. 470 '
  39. 480 LOCATE 4,1
  40. 490 PRINT "Ascii Code: ";
  41. 500 '
  42. 510 LOCATE 1,30
  43. 520 PRINT "Cursor"
  44. 530 LOCATE 2,30
  45. 540 PRINT"D Draw"
  46. 550 LOCATE 3,30
  47. 560 PRINT"E Erase"
  48. 570 LOCATE 4,30
  49. 580 PRINT"M Move"
  50. 590 LOCATE 6,1
  51. 600 PRINT"F1 -1   F2 +1"
  52. 610 LOCATE 7,1
  53. 620 PRINT"F3 -5   F4 +5"
  54. 630 LOCATE 6,30
  55. 640 PRINT"C Clear"
  56. 650 LOCATE 7,30
  57. 670 LOCATE 8,30
  58. 680 PRINT"L Load"
  59. 690 LOCATE 9,30
  60. 700 PRINT"S Save"
  61. 710 LOCATE 11,30
  62. 720 PRINT"F10  Escape"
  63. 730 '
  64. 740 GOSUB 1710
  65. 750 '
  66. 760 ' go to the main loop
  67. 770 GOSUB 1850
  68. 780 '
  69. 790 ' subroutine - Place Cursor
  70. 800 BLINK% = (BLINK% + 1) MOD 20
  71. 810 IF BLINK% < 10 THEN 880 ELSE 830
  72. 820 ' go to the main loop
  73. 830 'cursor off
  74. 840 IF A(ROW,COLUMN) = 0 THEN CH$ = "."
  75. 850 IF A(ROW,COLUMN) = 1 THEN CH$ = "#"
  76. 860 GOTO 930
  77. 870 '
  78. 880 'cursor on
  79. 890 IF CURS = -1 THEN CH$ = "-"
  80. 900 IF CURS = 0 THEN CH$ = "*"
  81. 910 IF CURS = 1 THEN CH$ = "+"
  82. 920 '
  83. 930 LOCATE 5 + ROW,18 + COLUMN
  84. 940 PRINT CH$;
  85. 950 RETURN
  86. 960 '
  87. 970 'subroutine - remove cursor
  88. 980 IF A(ROW,COLUMN) = 0 THEN CH$ = "."
  89. 990 IF A(ROW,COLUMN) = 1 THEN CH$ = "#"
  90. 1000 LOCATE 5 + ROW,COLUMN + 18
  91. 1010 PRINT CH$
  92. 1020 RETURN
  93. 1030 '
  94. 1040 'subroutine  -  show code and symbol
  95. 1050 LOCATE 4,13
  96. 1060 PRINT USING "###"; ACODE;
  97. 1070 CH = ACODE
  98. 1080 IF CH > 6 AND CH < 14 THEN CH = 32
  99. 1090 LOCATE 10,10
  100. 1100 PRINT CHR$(CH)
  101. 1110 RETURN
  102. 1120 '
  103. 1130 'subroutine  -  clear character
  104. 1140 LOCATE 23,18
  105. 1150 PRINT "Wait..."
  106. 1160 FOR I = 0 TO 7
  107. 1170 LOCATE 5 + I,18
  108. 1180 PRINT "........"
  109. 1190 FOR J = 0 TO 7
  110. 1200 A(I,7-J) = 0
  111. 1210 NEXT J
  112. 1220 NEXT I
  113. 1230 LOCATE 23,18
  114. 1240 PRINT "     "
  115. 1250 RETURN
  116. 1260 '
  117. 1270  'subroutine  - save character
  118. 1280 IF ACODE < 128 THEN 1430
  119. 1290 LOCATE 23,18:PRINT "Wait..."
  120. 1300 FOR I = 0 TO 7
  121. 1310   A0 = 0
  122. 1320   FOR J = 0 TO 7
  123. 1330     A0 = A0 + A0 + A(I,J)
  124. 1340   NEXT J
  125. 1350   POKE CBASE + 8 * (ACODE - 128) + I,A0
  126. 1360 NEXT I
  127. 1370 I = INT(ACODE/32):J = ACODE MOD 32
  128. 1380 LOCATE 15 + I,1 + J
  129. 1390 PRINT CHR$(ACODE)
  130. 1400 LOCATE 23,18:PRINT "     ";
  131. 1410 RETURN
  132. 1420 '
  133. 1430 LOCATE 23,10
  134. 1440 PRINT "Cannot save ASCII < 128";
  135. 1445 FOR I = 1 TO 1000:NEXT I
  136. 1450 LOCATE 23,10
  137. 1460 PRINT "                       ";
  138. 1470 RETURN
  139. 1480 '
  140. 1490 ' subroutine load character
  141. 1500 LOCATE 23,18
  142. 1510 PRINT "Wait..."
  143. 1520 DEF SEG
  144. 1530 COFF = CBASE + 8 * (ACODE - 128)
  145. 1540 IF ACODE > 127 THEN 1570
  146. 1550 DEF SEG = &HF000
  147. 1560 COFF = &HFA6E + 8 * ACODE
  148. 1570 FOR I = 0 TO 7
  149. 1580    A% = PEEK (COFF + I)
  150. 1590    FOR J = 0 TO 7
  151. 1600       X% = A% AND 1
  152. 1610       A(I,7 - J) = X%
  153. 1620       IF X% THEN X$ = "#" ELSE X$ = "."
  154. 1630       LOCATE 5 + I,18 + (7 - J):PRINT X$
  155. 1640       A% = INT(A% / 2)
  156. 1650    NEXT J
  157. 1660  NEXT I
  158. 1670 DEF SEG
  159. 1680 LOCATE 23,18:PRINT "       ";
  160. 1690 RETURN
  161. 1700 '
  162. 1710 ' subroutine - display all characters
  163. 1720 LOCATE 23,18:PRINT "Wait...";
  164. 1730 FOR I = 0 TO 7
  165. 1740 LOCATE 15 + I,1
  166. 1750 FOR J = 0 TO 31
  167. 1760 CH = 32 * I + J
  168. 1770 IF CH > 6 AND CH < 14 THEN CH = 32
  169. 1780 PRINT CHR$(CH);
  170. 1790 NEXT J
  171. 1800 PRINT
  172. 1810 NEXT I
  173. 1820 LOCATE 23,18:PRINT "      ";
  174. 1830 RETURN
  175. 1840 '
  176. 1850 '  Main Program
  177. 1860 '
  178. 1870 '  set cursor
  179. 1880 ROW = 0:COLUMN = 0 : CURS = 0
  180. 1890 '
  181. 1900 ' new ascii
  182. 1910 GOSUB 1040   'show code & symbol
  183. 1920 '
  184. 1930 'main loop
  185. 1940 BLINK% = 0
  186. 1950 IF CURS = -1 THEN A(ROW,COLUMN) = 0
  187. 1960 IF CURS = +1 THEN A(ROW,COLUMN) = 1
  188. 1970 '
  189. 1980 '  blink entry
  190. 1990 GOSUB 790  ' place cursor
  191. 2000 '
  192. 2010 A$ = INKEY$
  193. 2020 DEF SEG: POKE 106,0  'clear buf
  194. 2030 IF LEN(A$) = 0 THEN 1980
  195. 2040 IF LEN(A$) = 1 THEN 2080
  196. 2050 IF LEN(A$) = 2 THEN 2190
  197. 2060 GOTO 1980
  198. 2070 '
  199. 2080 '  Length = 1
  200. 2090 CODE1 = ASC(A$) AND &H5F
  201. 2100 IF CODE1 = 27 THEN 3190  ' Esc
  202. 2110 IF CODE1 = ASC("E") THEN 2880
  203. 2120 IF CODE1 = ASC("M") THEN 2920
  204. 2130 IF CODE1 = ASC("D") THEN 2960
  205. 2140 IF CODE1 = ASC("C") THEN 3230
  206. 2150 IF CODE1 = ASC("L") THEN 3270
  207. 2160 IF CODE1 = ASC("S") THEN 3310
  208. 2170 GOTO 1980
  209. 2180 '
  210. 2190 IF ASC(A$) < > 0 THEN 1930
  211. 2200 CODE2 = ASC(RIGHT$(A$,1))
  212. 2210 GOSUB 970
  213. 2220 '
  214. 2230 'CURSOR
  215. 2240 IF CODE2 = 71 THEN 2400 'HOME
  216. 2250 IF CODE2 = 73 THEN 2470 'UPPER R
  217. 2260 IF CODE2 = 79 THEN 2540 'LOWER L
  218. 2270 IF CODE2 = 81 THEN 2610 'LOWER R
  219. 2280 IF CODE2 = 72 THEN 2680 ' CURS UP
  220. 2290 IF CODE2 = 75 THEN 2730 'CURS LEFT
  221. 2300 IF CODE2 = 77 THEN 2780 ' CURS RIGHT
  222. 2310 IF CODE2 = 80 THEN 2830 ' CURS DOWN
  223. 2320 '
  224. 2330 'ASCII CODE
  225. 2340 IF CODE2 = 59 THEN 3000 ' -1
  226. 2350 IF CODE2 = 60 THEN 3050 ' +1
  227. 2360 IF CODE2 = 61 THEN 3100 ' -5
  228. 2370 IF CODE2 = 62 THEN 3140 ' +5
  229. 2380 GOTO 1980
  230. 2390 '
  231. 2400 'UPPER LEFT
  232. 2410 IF ROW = 0 THEN ROW = 8
  233. 2420 IF COLUMN = 0 THEN COLUMN = 8
  234. 2430 ROW = ROW - 1
  235. 2440 COLUMN = COLUMN - 1
  236. 2450 GOTO 1930
  237. 2460 '
  238. 2470 'UPPER RIGHT
  239. 2480 IF ROW = 0 THEN ROW = 8
  240. 2490 IF COLUMN = 7 THEN COLUMN = -1
  241. 2500 ROW = ROW - 1
  242. 2510 COLUMN = COLUMN  + 1
  243. 2520 GOTO 1930
  244. 2530 '
  245. 2540 'LOWER LEFT
  246. 2550 IF ROW = 7 THEN ROW = -1
  247. 2560 IF COLUMN = 0 THEN COLUMN = 8
  248. 2570 ROW = ROW + 1
  249. 2580 COLUMN = COLUMN - 1
  250. 2590 GOTO 1930
  251. 2600 '
  252. 2610 ' LOWER RIGHT
  253. 2620 IF ROW = 7 THEN ROW = -1
  254. 2630 IF COLUMN = 7 THEN COLUMN = -1
  255. 2640 ROW = ROW + 1
  256. 2650 COLUMN = COLUMN +1
  257. 2660 GOTO 1930
  258. 2670 '
  259. 2680 'CURS UP
  260. 2690 IF ROW = 0 THEN ROW = 8
  261. 2700 ROW = ROW - 1
  262. 2710  GOTO 1930
  263. 2720 '
  264. 2730 ' CURS LEFT
  265. 2740 IF COLUMN = 0 THEN COLUMN = 8
  266. 2750 COLUMN = COLUMN - 1
  267. 2760 GOTO 1930
  268. 2770 '
  269. 2780 ' CURS RIGHT
  270. 2790 IF COLUMN = 7 THEN COLUMN = -1
  271. 2800 COLUMN = COLUMN + 1
  272. 2810 GOTO 1930
  273. 2820 '
  274. 2830 'CURS DOWN
  275. 2840 IF ROW = 7 THEN ROW = -1
  276. 2850 ROW = ROW + 1
  277. 2860 GOTO 1930
  278. 2870 '
  279. 2880 'ERASE
  280. 2881 FOR G = 1 TO 4
  281. 2882 LOCATE G,28:PRINT " "
  282. 2883 NEXT
  283. 2884 LOCATE 3,28:PRINT CHR$(16)
  284. 2890 CURS = -1
  285. 2900 GOTO 1930
  286. 2910 '
  287. 2920 'MOVE
  288. 2921 FOR G = 1 TO 4
  289. 2922 LOCATE G,28:PRINT " "
  290. 2923 NEXT
  291. 2924 LOCATE 4,28:PRINT CHR$(16)
  292. 2930 CURS = 0
  293. 2940 GOTO 1930
  294. 2950 '
  295. 2960 'DRAW
  296. 2961 FOR G = 1 TO 4
  297. 2962 LOCATE G,28:PRINT " "
  298. 2963 NEXT
  299. 2964 LOCATE 2,28:PRINT CHR$(16)
  300. 2970 CURS = +1
  301. 2980 GOTO 1930
  302. 2990 '
  303. 3000 'ASCII -1
  304. 3010 IF ACODE = 0 THEN 3030
  305. 3020 ACODE = ACODE -1
  306. 3030 GOTO 1900
  307. 3040 '
  308. 3050 'ASCII +1
  309. 3060 IF ACODE = 255 THEN 3080
  310. 3070 ACODE = ACODE + 1
  311. 3080 GOTO 1900
  312. 3090 '
  313. 3100 'ASCII = -5
  314. 3110 IF ACODE < 5 THEN 3130
  315. 3120 ACODE = ACODE - 5
  316. 3130 GOTO 1900
  317. 3140 'ASCII +5
  318. 3150 IF ACODE > 250 THEN 3170
  319. 3160 ACODE = ACODE + 5
  320. 3170 GOTO 1900
  321. 3180 '
  322. 3190 'ESCAPE FROM PROGRAM
  323. 3200 LOCATE 23,1
  324. 3210 GOTO 3350
  325. 3220 '
  326. 3230 'CLEAR
  327. 3240 GOSUB 1130
  328. 3250 GOTO 1840
  329. 3260 '
  330. 3270 'LOAD
  331. 3280 GOSUB 1490 ' LOAD
  332. 3290 GOTO 1840
  333. 3300 '
  334. 3310 'SAVE
  335.     08/11/84 00:52
  336. PAGE    .COM    768   A 12/03/83 17:21   POLICE  .BAS   8704     08/11/84 00:59
  337. MVPFORTH.AQM  34225   A 06/16/84 23:19   CPU8086 .BQK  14848     08/11/84 01:06
  338. LBN     .DOC   3200   A 01/10/84 22:45   UTILITY .BQK  35712     08/11/84 01:14
  339. LBN     .EXE  15872   A 01/10/84 22:49   EXTEND86.BQK   8832     08/11/84 01:34
  340. PAC-GIRL.EQE  41205   A 01/20/84 11:44